50 CLS:LOCATE 2,32:PRINT "You may convert:":LOCATE 4,30:PRINT"a)---Binary to Decimal"
60 LOCATE 5,30:PRINT"b)---Decimal to Binary":LOCATE 6,30:PRINT"c)---Hexadecimal to Decimal"
70 LOCATE 7,30:PRINT"d)---Decimal to Hexadecimal":LOCATE 8,30:PRINT"e)---Binary to Hexadecimal":LOCATE 9,30:PRINT"f)---Hexadecimal to Binary":LOCATE 10,30:PRINT"g)---End
80 X$=INPUT$(1):IF (ASC(X$)<65 OR ASC(X$)>71) AND (ASC(X$)<97 OR ASC(X$)>103) THEN 80
90 IF X$="A" OR X$="a" THEN 160
100 IF X$="B" OR X$="b" THEN 270
110 IF X$="C" OR X$="c" THEN 340
120 IF X$="D" OR X$="d" THEN 420
130 IF X$="E" OR X$="e" THEN 490
140 IF X$="F" OR X$="f" THEN 550
150 IF X$="G" OR X$="g" THEN CLS:PRINT"Good-by from CNVRTR.":END
160 CLS:INPUT "What is your binary number (please no spaces between groups)";B$
170 FOR X=1 TO LEN(B$):X$=MID$(B$,X,1):IF X$="0" OR X$="1" THEN 180 ELSE 190
180 NEXT :GOTO 210
190 IF X$=" " THEN E$="<Space>" ELSE E$=X$
200 BEEP:PRINT"You cannot use "B$" because of the character `"E$"' at position"X".":X$=INPUT$(1):GOTO 160
210 GOSUB 640
220 IF IND THEN IND=0:COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
230 F$="":FOR X=0 TO 18:IF D>10^X THEN 250
240 FOR Y=1 TO X+4:F$=F$+"#":NEXT :GOTO 260
250 NEXT X
260 PRINT"The decimal version of "B$" is ";:PRINT USING F$+",_.";D:LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
270 CLS:INPUT "What is your decimal number (Please not over 1.1259E+14)";D
280 IF D>2^50 THEN BEEP:PRINT"I cannot take numbers that big":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT(1):GOTO 270
290 IF D<0 THEN IND1=1
300 D1=D
310 GOSUB 700
320 PRINT"The Binary version of"D1"is "B$
330 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
340 CLS:INPUT "What is you hexadecimal number (no more than 6 digits)";H$
350 IF LEN(H$)>6 THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 340
360 FOR X=1 TO LEN(H$):X$=MID$(H$,X,1):IF (ASC(X$)>47 AND ASC(X$)<58) OR (ASC(X$)>64 AND ASC(X$)<72) OR (ASC(X$)>96 AND ASC(X$)<104) THEN 380 ELSE 370
370 PRINT"This is not proper hexadecimal notation because of the character `"X$"'":PRINT"at position"X".":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 340
380 NEXT
390 GOSUB 800
400 PRINT"The Decimal value of "H$" is"H1
410 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
420 CLS:INPUT"What is your decimal number (please not over 1677216)";D
430 IF D>1677216! THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 420
440 IF D<1 THEN IND1=1
450 D2=ABS(D):D=ABS(D)
460 GOSUB 910
470 PRINT"The hexadecimal version of"D2"is "H$"."
480 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
490 CLS:INPUT "What is your Binary number (please not over twenty places)";B$
500 IF LEN(B$)>20 THEN PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 490
510 GOSUB 640
520 GOSUB 910
530 PRINT"The Hexadecimal version of "B$" is "H$"."
540 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
550 CLS:INPUT "What is your hexadecimal number (not over 6 places please)";H$
560 IF LEN(H$)>6 THEN BEEP:PRINT"I cannot take numbers that big!":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 550
570 FOR X=1 TO LEN(H$):X$=MID$(H$,X,1):IF (ASC(X$)>47 AND ASC(X$)<58) OR (ASC(X$)>64 AND ASC(X$)<72) OR (ASC(X$)>96 AND ASC(X$)<104) THEN 590 ELSE 580
580 PRINT"This is not proper hexadecimal notation because of the character `"X$"'":PRINT"at position"X".":COLOR 0,7:LOCATE 25,26:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 550
590 NEXT
600 GOSUB 800:D=H1
610 GOSUB 700
620 PRINT"The Decimal version of "H$" is "B$" in decimal.":
630 LOCATE 25,26:COLOR 0,7:PRINT" Hit any key to continue. ";:COLOR 7,0:X$=INPUT$(1):GOTO 50
640 'Binary to Decimal
650 D=0:X=LEN(B$):IF X>50 THEN BEEP:PRINT"I cannot take numbers that big!":IND=1:RETURN
660 FOR L=X TO 1 STEP -1:X$=MID$(B$,L,1):IF X$="0" THEN 680
670 D=D+N(L)
680 NEXT
690 RETURN
700 B$="":FOR X=1 TO 50:IF N(X)<=D THEN 720
710 X=X-1:GOTO 730
720 NEXT
730 FOR X1=X TO 1 STEP -1:IF N(X1)<=D THEN B$=B$+"1":D=D-N(X1):GOTO 750
740 B$=B$+"0"
750 NEXT
760 L=LEN(B$):FOR X=1 TO L:B$(X)=MID$(B$,X,1):NEXT
770 B$="":IF IND1=1 THEN B$="-":IND1=0
780 FOR X=L TO 1 STEP -1:B$=B$+B$(X):NEXT
790 RETURN
800 H1=0:H=0:FOR X=1 TO LEN(H$):X$=MID$(H$,X,1)
810 IF ASC(X$)>47 AND ASC(X$)<58 THEN H=VAL(X$):GOTO 880
820 IF X$="A" OR X$="a" THEN H=10
830 IF X$="B" OR X$="b" THEN H=11
840 IF X$="C" OR X$="c" THEN H=12
850 IF X$="D" OR X$="d" THEN H=13
860 IF X$="E" OR X$="e" THEN H=14
870 IF X$="F" OR X$="f" THEN H=15
880 H1=H1+H*H(LEN(H$)-X+1)
890 NEXT
900 RETURN
910 D=D+1:H$="":IF IND1=1 THEN IND1=0:H$="-"
920 FOR X=1 TO 6:IF H(X)<=D THEN 940
930 X=X-1:GOTO 950
940 NEXT
950 FOR X1=X TO 1 STEP -1
960 FOR C=0 TO 15:IF C*H(X1)>=D THEN 980
970 NEXT C
980 T=(C-1)*H(X1):DI=C-1
990 IF DI=0 THEN H$=H$+"0":GOTO 1150
1000 IF DI=1 THEN H$=H$+"1":GOTO 1150
1010 IF DI=2 THEN H$=H$+"2":GOTO 1150
1020 IF DI=3 THEN H$=H$+"3":GOTO 1150
1030 IF DI=4 THEN H$=H$+"4":GOTO 1150
1040 IF DI=5 THEN H$=H$+"5":GOTO 1150
1050 IF DI=6 THEN H$=H$+"6":GOTO 1150
1060 IF DI=7 THEN H$=H$+"7":GOTO 1150
1070 IF DI=8 THEN H$=H$+"8":GOTO 1150
1080 IF DI=9 THEN H$=H$+"9":GOTO 1150
1090 IF DI=10 THEN H$=H$+"A":GOTO 1150
1100 IF DI=11 THEN H$=H$+"B":GOTO 1150
1110 IF DI=12 THEN H$=H$+"C":GOTO 1150
1120 IF DI=13 THEN H$=H$+"D":GOTO 1150
1130 IF DI=14 THEN H$=H$+"E":GOTO 1150
1140 IF DI=15 THEN H$=H$+"F"
1150 D=D-T:NEXT X1
1160 RETURN
1170 L=LEN(B$):FOR X=1 TO L:B$(X)=MID$(B$,X,1):NEXT